export default {
    updateChatHistory(vue,res){
        if(res.code!=200){
            vue.$message({
                message:'获取聊天记录失败',
                type:'error'
            })
            return
        }
        let lastData=res.getchathistory.chathistoryList
        // 根据需要将图片转为可加载字符串
        for(let i = 0; i < lastData.length; i++){
            if(lastData[i].isimage){
                lastData[i].data=vue.$webSocketTools.base64ToImage(lastData[i].data)
            }
            if(lastData[i].groupuid>0){
                lastData[i].senduserheadimage=vue.$webSocketTools.base64ToImage(lastData[i].senduserheadimage)
            }
            if(lastData.senduseruid==vue.$store.state.userUid){
                lastData[i].getuserheadimage=vue.$webSocketTools.base64ToImage(lastData[i].getuserheadimage)
            }else{
                lastData[i].senduserheadimage=vue.$webSocketTools.base64ToImage(lastData[i].senduserheadimage)
            }
        }
        vue.$store.commit("INIT_CHAT_MSG",lastData)
    },
    getChatMsg(vue,res){
        
        let chathistory=res.chathistory

        if(chathistory.isimage){
            chathistory.data=vue.$webSocketTools.base64ToImage(chathistory.data)
        }

        // 对发送者头像做处理
        chathistory.senduserheadimage=vue.$webSocketTools.base64ToImage(chathistory.senduserheadimage)

        vue.$store.commit("UPDATE_CHAT_LIST",chathistory);
        
        // 这里有点复杂，就时把群和私聊分开讨论了，||前是私聊后是群聊
        if((chathistory.senduseruid==vue.$store.state.chatObjectUid || chathistory.getuseruid==vue.$store.state.chatObjectUid
             && !chathistory.groupuid>0)
            || (chathistory.groupuid==vue.$store.state.chatObjectUid && chathistory.groupuid>0)){
                // 判断收到的时候是当前窗口需要的信息，再做渲染
                vue.$store.commit("UPDATE_CHAT_MSG",chathistory);
                // 如果是当前页面就发数据标识已读
                if(vue.$route.name=="chat"){
                    // 如果处于已读状态，发请求修改新消息状态
                    let proto =new vue.$protobufClass.PackageInfo();
                    let data = new vue.$chatHistory.ChatHistory();
                    if(chathistory.groupuid>0){
                        data.setGroupuid(chathistory.groupuid)
                    }else{
                        data.setSenduseruid(chathistory.senduserid)
                    }
                    proto.setChathistory(data);
                    proto.setToken(localStorage.getItem("token"));
                    proto.setCallbackid(9); // 后端的处理事件id
                    proto=proto.serializeBinary();
                    vue.$webSocketTools.send(vue,proto)
                }else{
                    vue.$store.commit("CHAT_LIST_UNREAD_NUMBER_ADD",chathistory)
                }
                return 
        }
        vue.$store.commit("CHAT_LIST_UNREAD_NUMBER_ADD",chathistory)
    },
    // 记得传入vue组件的对象,不然访问不到vueX
    addResult(vue,res){
        if(res.code!=200){
            vue.$message({
                message:'初始化数据异常',
                type:'erro'
            })
            return;
        }
        // 根据是否为群做渲染处理
        if(res.groupinfo!=null){
            res.groupinfo.headimage=vue.$webSocketTools.base64ToImage(res.groupinfo.headimage)
            vue.$store.commit("INSERT_ONE_GROUP_OBJECT",res.groupinfo)
        }else{
            res.accountnumber.image=vue.$webSocketTools.base64ToImage(res.accountnumber.image)
            vue.$store.commit("INSERT_ONE_FRIEND_OBJECT",res.accountnumber)
        }
    },
    init(vue,res){
        if(res.code!=200){
            vue.$message({
                message:'初始化数据异常',
                type:'erro'
            })
            return;
        }

        let friendList=res.websocketinit.friendlistList
        let groupList=res.websocketinit.grouplistList
        let addFriendList=res.websocketinit.addfriendlistList
        let addGroupList=res.websocketinit.addgrouplistList
        // 将数据处理好
        for(let i = 0; i < friendList.length; i++){
            friendList[i].image=vue.$webSocketTools.base64ToImage(friendList[i].image)
        }
        for(let i = 0; i < groupList.length; i++){
            groupList[i].headimage=vue.$webSocketTools.base64ToImage(groupList[i].headimage)
        }
        for(let i = 0; i < addFriendList.length; i++){
            addFriendList[i].image=vue.$webSocketTools.base64ToImage(addFriendList[i].image)
        }
        for(let i = 0; i < addGroupList.length; i++){
            addGroupList[i].image=vue.$webSocketTools.base64ToImage(addGroupList[i].image)
        }
        // 写入VueX
        vue.$store.commit("INIT_LIST_FRIEND_AND_GROUP",{friendList:friendList,groupList:groupList,
            addFriendList:addFriendList,addGroupList:addGroupList})

    },
    addFriend(vue,res){
        if(res.code!=200){
            vue.$message({
                message:'添加好友失败',
                type:'erro'
            })
            return;
        }
        // 解析好头像
        let data=res.addgrouporfriendrequest
        data.image=vue.$webSocketTools.base64ToImage(data.image)
        // 传入数据包
        vue.$store.commit("UPDATE_FRIEND_OR_GROUP",{isGroup:false,data:data})
    },
    addGroup(vue,res){
        if(res.code!=200){
            vue.$message({
                message:'添加群聊失败',
                type:'erro'
            })
            return;
        }
        let data=res.addgrouporfriendrequest
        data.image=vue.$webSocketTools.base64ToImage(data.image)
        // 传入数据包
        vue.$store.commit("UPDATE_FRIEND_OR_GROUP",{isGroup:true,data:data})
    }

}